package com.xinzhi.service.impl;

import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.xinzhi.mapper.PoinosMapper;
import com.xinzhi.pojo.Poinos;
import com.xinzhi.pojo.Reason;
import com.xinzhi.pojo.User;
import com.xinzhi.service.PoinosService;
import com.xinzhi.utils.RedisUtils;
import com.xinzhi.utils.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

@Service
public class PoinosServiceImpl  implements PoinosService {
    @Autowired
    private PoinosMapper poinosMapper;
    @Autowired
    private RedisUtils redisUtils;
    @Autowired
    private RedisTemplate<String, Object> redisTemplate;


    @Override
    public Result updateReason(Reason add) {
        // 首先从Redis缓存中读取数据
        Reason cachedAdd = (Reason) redisUtils.get("add");
        if (cachedAdd != null && cachedAdd.getPoinexe().equals(add.getPoinexe())) {
            // 如果Redis缓存中存在并且是要修改的数据，直接使用缓存数据进行更新操作
            int i = poinosMapper.uapdateReason(add);
            if (i > 0) {
                // 更新成功后更新Redis缓存，并设置过期时间
                redisUtils.set("add", add, 3600); // 设置缓存过期时间为1小时
                return Result.ok("修改成功");
            } else {
                return Result.error("修改失败");
            }
        } else {
            // 如果Redis缓存中不存在或者不是要修改的数据，从数据库中进行更新操作
            int i = poinosMapper.uapdateReason(add);
            if (i > 0) {
                // 更新成功后更新Redis缓存，并设置过期时间
                redisUtils.set("add", add, 3600); // 设置缓存过期时间为1小时
                return Result.ok("修改成功");
            } else {
                return Result.error("修改失败");
            }
        }
    }


    @Override
    public Result updatePoinos(Poinos poinos) {
        Poinos cachedAdd = (Poinos) redisUtils.get("poinos");
        if (cachedAdd != null && cachedAdd.getDemerit().equals(poinos.getDemerit())) {
            // 如果Redis缓存中存在并且是要修改的数据，直接使用缓存数据进行更新操作
            int i = poinosMapper.updatePoints(poinos);
            if (i > 0) {
                // 更新成功后更新Redis缓存，并设置过期时间
                redisUtils.set("add", poinos, 3600); // 设置缓存过期时间为1小时
                return Result.ok("修改成功");
            } else {
                return Result.error("修改失败");
            }
        } else {
            // 如果Redis缓存中不存在或者不是要修改的数据，从数据库中进行更新操作
            int i = poinosMapper.updatePoints(poinos);
            if (i > 0) {
                // 更新成功后更新Redis缓存，并设置过期时间
                redisUtils.set("poinos", poinos, 3600); // 设置缓存过期时间为1小时
                return Result.ok("修改成功");
            } else {
                return Result.error("修改失败");
            }
        }
    }

}
